using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.IO;

namespace TestImport.View.PlatoBestellingen
{
    public partial class LeveringenBeheren : Form
    {

        private DataView dv;
        private DataView dv1;
        private int huidigeLeverLijn;
        //herschrijven bestand
        string totaalLijn = "";
        string lijst = "";

        System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle = new System.Windows.Forms.DataGridViewCellStyle();

        public LeveringenBeheren()
        {
            InitializeComponent();
            this.BackColor = InstParameters.Default.schermkleur;
        }

      
        private void LeveringenBeheren_Load(object sender, EventArgs e)
        {
          
           this.leveringTableAdapter.Fill(this.onsBoekenPakketDataSet.Levering);
           dv = leveringBindingSource.List as DataView;
           activeerUpdateAantallen(false);
           gpbUpdate.Visible = false;  
        }

        private void btnPrint_Click(object sender, EventArgs e)
        {
            try
            {
                string bestand = leveringDataGridView.CurrentRow.Cells["dgvBestand"].Value.ToString();
                Process.Start("notepad",bestand);//@".\Bestellingen\tetten"); //@"C:\PlatoBoeken2008\FoxBoekenBis\TestImport\TestImport\bin\Debug\Bestellingen\tetten");
                //myProcess.Start();
            }
            catch (Exception ex)
            {
                //MessageBox.Show(ex.Message);
            }
            
        }

        private void leveringDataGridView_SelectionChanged(object sender, EventArgs e)
        {
            try
            {
                int vLeveringID = int.Parse(leveringDataGridView.CurrentRow.Cells["dgvLeveringID"].Value.ToString());
                this.levering_BoekTableAdapter.FillByLeveringID(this.onsBoekenPakketDataSet.Levering_Boek, vLeveringID);
                txtOpmerking.Text = leveringDataGridView.CurrentRow.Cells["dgvOpmerking"].Value.ToString();
            }
            catch (Exception ex){;}
        }

        private void btnOpmerking_Click(object sender, EventArgs e)
        {
            dv[leveringDataGridView.CurrentRow.Index]["opmerking"] = txtOpmerking.Text;
            dv[leveringDataGridView.CurrentRow.Index].EndEdit();
        }

        private void activeerUpdateAantallen(bool aan)
        {
            if (aan)
            {
                
                dataGridViewCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight;
                dataGridViewCellStyle.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(128)))));
                this.dgvAantal.DefaultCellStyle = dataGridViewCellStyle;
           
                leveringDataGridView.Enabled = false;
                levering_BoekDataGridView.Enabled = true;
                btnAnnuleer.Enabled = true;
                btnRegistreer.Enabled = true;
                btnOpmerking.Enabled = false;
                btnPrint.Enabled = false;
                btnHerschrijf.Enabled = false;
                btnWijzig.Enabled = false;
                lblWijzig.Text = "Wijzig aantallen";
                dgvAantal.ReadOnly = false;

            }
            else
            {
                dgvAantal.ReadOnly = true;
                dataGridViewCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight;
                dataGridViewCellStyle.BackColor = System.Drawing.Color.White;
                this.dgvAantal.DefaultCellStyle = dataGridViewCellStyle;

                leveringDataGridView.Enabled = true;
                levering_BoekDataGridView.Enabled = false;
                btnAnnuleer.Enabled = false;
                btnRegistreer.Enabled = false;
                btnOpmerking.Enabled = true;
                btnPrint.Enabled = true;
                btnHerschrijf.Enabled = true;
                btnWijzig.Enabled = true;
                lblWijzig.Text = "";
            }
            
        }

        private void btnWijzig_Click(object sender, EventArgs e)
        {
            //huidigeBestelLijn = bestellingDataGridView.CurrentRow.Index;
            //bestellingDataGridView_SelectionChanged(null, null);
            activeerUpdateAantallen(true);
            gpbUpdate.Visible = true; 
        }

        private void btnAnnuleer_Click(object sender, EventArgs e)
        {
            activeerUpdateAantallen(false);
            gpbUpdate.Visible = false; 
            //levering_BoekTableAdapter.Fill(this.onsBoekenPakketDataSet.Levering_Boek);
        }

        private void btnRegistreer_Click(object sender, EventArgs e)
        {
            DialogResult antwoord = MessageBox.Show("Wil je de gewijzigde aantallen registreren?", "Registreer aantallen", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (antwoord == DialogResult.Yes)
            {
                levering_BoekTableAdapter.Update(this.onsBoekenPakketDataSet.Levering_Boek);
                activeerUpdateAantallen(false);
            }
            gpbUpdate.Visible = false; 
        }

        private void LeveringenBeheren_FormClosing(object sender, FormClosingEventArgs e)
        {
            leveringTableAdapter.Update(this.onsBoekenPakketDataSet.Levering);
        }

        private void btnHerschrijf_Click(object sender, EventArgs e)
        {
            int teller = 1;
            int totaalLevering = 0;
            int vstatus = 0;
            int aantal = 0;
            try
            {
                huidigeLeverLijn = leveringDataGridView.CurrentRow.Index;
                string bestandsNaam = leveringDataGridView.CurrentRow.Cells["dgvBestand"].Value.ToString();
                DateTime leverDatum = DateTime.Parse(leveringDataGridView.CurrentRow.Cells["dgvLeverDatum"].Value.ToString());
                string opmerking = leveringDataGridView.CurrentRow.Cells["dgvOpmerking"].Value.ToString();
                lijst = "";
                dv1 = levering_BoekBindingSource.List as DataView;
                foreach (DataRowView drv in dv1)
                {
                    try
                    {
                        aantal = int.Parse(drv["aantal"].ToString());
                        if (aantal > 0)
                        {
                            lijst += teller.ToString().PadLeft(4) + ". " + drv["isbnNr"].ToString().PadRight(15) + drv["titel"].ToString().PadRight(55, '.') + drv["categorieCode"].ToString().PadRight(7, '.') + drv["uitgeverNaam"].ToString().PadRight(15, '.') + aantal.ToString().PadLeft(5) + Environment.NewLine;
                            teller++;
                            totaalLevering += aantal;
                        }
                    }
                    catch (Exception ex) { ;}
                }
                totaalLijn = "Aantal titels: " + (teller - 1) + "   " + "Aantal boeken: " + totaalLevering;
                PlatoLeveringRegistratie pl = new PlatoLeveringRegistratie(this, totaalLijn, lijst, opmerking, leverDatum);
                pl.ShowDialog();

            }
            catch (Exception ex) { ;}//MessageBox.Show(ex.Message); }
        }

        public void herschrijfBestand(DateTime leverDatum, string opmerking)
        {
            dv[huidigeLeverLijn]["opmerking"] = opmerking;
            dv[huidigeLeverLijn]["datumLevering"] = leverDatum;
            dv[huidigeLeverLijn].EndEdit();
                       
            string bestand = "Levering van Plato";
            bestand += "Leverdatum: " + leverDatum.Date.ToString().Substring(0, 10) + Environment.NewLine;
            bestand += totaalLijn + Environment.NewLine + Environment.NewLine;
            bestand += lijst;

            try
            {
                string bestandsNaam = leveringDataGridView.CurrentRow.Cells["dgvBestand"].Value.ToString();
                FileStream aFile = new FileStream(bestandsNaam, FileMode.Create);
                StreamWriter sw = new StreamWriter(aFile);
                sw.Write(bestand);
                sw.Flush();
                sw.Close();

            }
            catch (IOException e)
            {
                MessageBox.Show("Er is een probleem opgetreden bij het registreren van de leverlijst");
                return;
            }
        }
    
    }
}